/**
 * 导航工具类
 * 提供统一的页面跳转方法
 */

export class Navigation {
  /**
   * 跳转到指定页面
   * @param {string} path 页面路径
   * @param {object} params 页面参数
   */
  static navigateTo(path, params = {}) {
    let url = path
    
    // 添加参数
    if (Object.keys(params).length > 0) {
      const queryString = Object.keys(params)
        .map(key => `${key}=${encodeURIComponent(params[key])}`)
        .join('&')
      url += `?${queryString}`
    }
    
    // 导航到指定页面
    window.location.hash = url
  }
  
  /**
   * 返回上一页
   */
  static navigateBack() {
    if (window.history.length > 1) {
      window.history.back()
    } else {
      // 如果没有历史记录，跳转到主页
      this.navigateTo('/pages/main/index')
    }
  }
  
  /**
   * 跳转到登录页
   */
  static toLogin() {
    this.navigateTo('/pages/login/index')
  }
  
  /**
   * 跳转到主页
   */
  static toMain() {
    this.navigateTo('/pages/main/index')
  }
  
  /**
   * 跳转到角色选择页
   */
  static toRoleSelect() {
    this.navigateTo('/pages/role-select/index')
  }
  
  /**
   * 跳转到门派选择页
   */
  static toSectSelect() {
    this.navigateTo('/pages/sect/select')
  }
  
  /**
   * 跳转到门派详情页
   */
  static toSectIndex(sectId = null) {
    const params = sectId ? { sectId } : {}
    this.navigateTo('/pages/sect/index', params)
  }
  
  /**
   * 跳转到门派武学页
   */
  static toSectSkills(sectId = null) {
    const params = sectId ? { sectId } : {}
    this.navigateTo('/pages/sect/skills', params)
  }
  
  /**
   * 跳转到属性页面
   */
  static toAttribute() {
    this.navigateTo('/pages/attribute/attribute')
  }
  
  /**
   * 跳转到武学系统
   */
  static toSkill() {
    this.navigateTo('/pages/skill/skill')
  }
  
  /**
   * 跳转到武学详情
   */
  static toSkillDetail(skillId) {
    this.navigateTo('/pages/skill/detail', { skillId })
  }
  
  /**
   * 跳转到装备武学
   */
  static toSkillEquip() {
    this.navigateTo('/pages/skill/equip')
  }
  
  /**
   * 跳转到任务系统
   */
  static toQuest() {
    this.navigateTo('/pages/quest/index')
  }
  
  /**
   * 跳转到任务详情
   */
  static toQuestDetail(questId) {
    this.navigateTo('/pages/quest/detail', { questId })
  }
  
  /**
   * 跳转到任务地图
   */
  static toQuestMap() {
    this.navigateTo('/pages/quest/map')
  }
  
  /**
   * 跳转到任务对话
   */
  static toQuestDialogue(questId, npcId = null) {
    const params = { questId }
    if (npcId) params.npcId = npcId
    this.navigateTo('/pages/quest/dialogue', params)
  }
  
  /**
   * 跳转到伙伴系统
   */
  static toPartner() {
    this.navigateTo('/pages/partner/index')
  }
  
  /**
   * 跳转到伙伴详情
   */
  static toPartnerDetail(partnerId) {
    this.navigateTo('/pages/partner/detail', { id: partnerId })
  }
  
  /**
   * 跳转到招募伙伴
   */
  static toPartnerRecruit() {
    this.navigateTo('/pages/partner/recruit')
  }
  
  /**
   * 跳转到阵容配置
   */
  static toPartnerFormation() {
    this.navigateTo('/pages/partner/formation')
  }
  
  /**
   * 跳转到战斗页面
   */
  static toBattle(battleType = 'normal', battleId = null) {
    const params = { battleType }
    if (battleId) params.battleId = battleId
    this.navigateTo('/pages/battle/index', params)
  }
  
  /**
   * 获取当前页面参数
   */
  static getCurrentParams() {
    const hash = window.location.hash.slice(1)
    const [path, queryString] = hash.split('?')
    
    if (!queryString) return {}
    
    const params = {}
    queryString.split('&').forEach(param => {
      const [key, value] = param.split('=')
      if (key && value) {
        params[key] = decodeURIComponent(value)
      }
    })
    
    return params
  }
  
  /**
   * 获取当前页面路径
   */
  static getCurrentPath() {
    const hash = window.location.hash.slice(1)
    return hash.split('?')[0]
  }
}

// 导出默认实例
export default Navigation